#ifndef __MOTOR_H__
#define __MOTOR_H__
#include "bsp_system.h"

// 电机1（Motor A）
#define MOTOR_A_PWM_PORT      GPIOE
#define MOTOR_A_PWM_PIN       GPIO_PIN_9    // TIM1_CH1
#define MOTOR_AIN1_PORT       GPIOE
#define MOTOR_AIN1_PIN        GPIO_PIN_12
#define MOTOR_AIN2_PORT       GPIOE
#define MOTOR_AIN2_PIN        GPIO_PIN_13

// 电机2（Motor B）
#define MOTOR_B_PWM_PORT      GPIOE
#define MOTOR_B_PWM_PIN       GPIO_PIN_11   // TIM1_CH2
#define MOTOR_BIN1_PORT       GPIOE
#define MOTOR_BIN1_PIN        GPIO_PIN_15   
#define MOTOR_BIN2_PORT       GPIOE
#define MOTOR_BIN2_PIN        GPIO_PIN_14   

// 电机1控制正向
#define MOTOR_A_FORWARD() \
    HAL_GPIO_WritePin(MOTOR_AIN1_PORT, MOTOR_AIN1_PIN, GPIO_PIN_SET); \
    HAL_GPIO_WritePin(MOTOR_AIN2_PORT, MOTOR_AIN2_PIN, GPIO_PIN_RESET)

// 电机2控制正向
#define MOTOR_B_FORWARD() \
    HAL_GPIO_WritePin(MOTOR_BIN1_PORT, MOTOR_BIN1_PIN, GPIO_PIN_RESET); \
    HAL_GPIO_WritePin(MOTOR_BIN2_PORT, MOTOR_BIN2_PIN, GPIO_PIN_SET) 
	
// 电机1控制反向
#define MOTOR_A_BACKWARD() \
    HAL_GPIO_WritePin(MOTOR_AIN1_PORT, MOTOR_AIN1_PIN, GPIO_PIN_RESET); \
    HAL_GPIO_WritePin(MOTOR_AIN2_PORT, MOTOR_AIN2_PIN, GPIO_PIN_SET)

// 电机2控制正向
#define MOTOR_B_BACKWARD() \
    HAL_GPIO_WritePin(MOTOR_BIN1_PORT, MOTOR_BIN1_PIN, GPIO_PIN_SET); \
    HAL_GPIO_WritePin(MOTOR_BIN2_PORT, MOTOR_BIN2_PIN, GPIO_PIN_RESET) 

void Motor_Init();
void Motor_SetSpeed(int8_t motor_id, int16_t speed); 

#endif